package com.sendi.annotation.report;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(value=RetentionPolicy.RUNTIME)
@Target(value=ElementType.FIELD)
public @interface ReportColunm {

	/*
	 * 字段类型,默认为fieldTye.STRING
	 */
	fieldTye fieldtype() default fieldTye.STRING;
	/*
	 * 是否为group by 字段，默认为NO不是,否则为YES
	 */
	boolean isgroupby() default false;
	GroupByType groupbytype() default GroupByType.DESC;
	/*
	 * 当isgroupby为NO时，取值为： SumAction  MaxAction  MinAction AvgAction  CountAction,什么都不值，则不没有统计动作值为-1
	 */
	GroupByAction groupbyaction() default GroupByAction.NullAction;
	/*
	 * 当有GroupByAction时，统计出来的结果接收的字段，
	 * 如果求filed1 的最大值，求到最大值用哪个字段接收，如用field3
	 */
	String groupbyactionacceptfield() default "";
	/*
	 * 如果有GroupByAction，则相应的其他显示其他列信息，名称用逗号分隔名字
	 */
	String groupbyactionpointfiled() default "";
	
	/*
	 * 如果该列是被统计出结果来的，被指向的列，那么有可能需要获得其他信息来赋值的，
	 * 所以给出方法名称，目前只支持无参的方法,名称用逗号分隔名字
	 */
	String assignmentmethdname() default "";
	/*
	 *  当统计动作为CountAction时，做的一种特殊处理,distinct，field1,field2 ..
	 * 这后面为字段CountAction字段，也就是在startindex 到endindex中，
	 * 这些字段必须为string类型,，只有这两个字段加起来不相同时，才加1
	 */
	String countdetail() default "";
 
 }
 